<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    

    <script>

        /*
          Promise.race()  (race => 竞速) (返回响应速度最快的promise)
          1. 参数是一个 Promise 数组
          2. 返回一个 Promise
          3. 返回的 Promise 的结果，是 Promise 数组中第一个完成的（settled）的 Promise 的结果
          4. 如果 Promise 数组中第一个完成的 Promise 是 reject，那么返回的 Promise 也是 reject
          5. 如果 Promise 数组中第一个完成的 Promise 是 resolve，那么返回的 Promise 也是 resolve
          6. 如果 Promise 数组中没有任何 Promise，那么返回的 Promise 也是 resolve

        */

        //通常用来设置超时
        const p1 = new Promise((resolve,reject)=>{
            setTimeout(()=>{
                reject('请求超时')
            },5000)
        })
        const p2 = new Promise((resolve,reject)=>{
            setTimeout(()=>{
                resolve('请求成功')
            },6000)
        })

        Promise.race([p1,p2]).then(result=>{
            console.log(result)
        }).catch(err=>{
            console.log(err) //请求超时，因为p2需要6秒才能完成，所以p1先完成，p2还没有完成，p1先返回结果，p2被忽略
        })
    </script>
</body>
</html>